Machine Learning Projekt

Herbstsemester 2021
Noé Schreiber und Alex Koller

Inhaltsverzeichnis



Einleitung

Das Team "Wetterwarte Waldau" beschäftigt sich mit der Wettervorhersage einzelner Ortschaften in Australien. Für Landwirtschaft und Ökosystem sind auf einem solch trockenen Kontinent die Regentage von besonderer Bedeutung. Das Augenmerk wird auf die Vorhersage genannter Regentage gesetzt.



Zielsetzung und Vorgehensweise

Es soll aus einem Datensatz mit Wetterdaten in Australien ein Learner implementiert werden, mit dem Wettervorhersagen gemacht werden können. Konkret geht es darum, Regentage zu bestimmen. Diese sollen aus den Merkmalen der Vortage, Luftdruck, relative Luftfeuchtigkeit, Windrichtung und -stärke, Temperatur, Verdunstung und Wolkenanteil am Himmel bestimmt werden.



Explorative Datenanalyse

Die explorative Datenanalyse wird auch als explorative Statistik bezeichnet und bildet ein Teilgebiet der Statistik. Es werden Daten analysiert, zu denen kaum oder sogar keine bekannten Zusammenhänge bestehen.


Dimensionen des Datensatzes

Wir haben 145'460 statistische Einheiten im Datensatz erfasst, welche jeweils über 23 Merkmale verfügen.


Vorschau der Daten

Die Merkmale haben folgende Eigenschaften:

Variablenname Typ Einheit Bemerkung
Date (Datum) Der Tag, an dem gemessen wurde
Location (Qualitativ, nominal) Die Stadt in der gemessen wurde
MinTemp (Quantitativ, stetig) Die tiefste gemessene Temperatur [°C]
MaxTemp (Quantitativ, stetig) Die höchste gemessene Temperatur [°C]
Rainfall (Quantitativ, stetig) Die Niederschlagsmenge in den 24 Stunden vor 9 Uhr [mm]
Evaporation (Quantitativ, stetig) Pfannenverdunstung in den 24 Stunden vor 9 Uhr [mm]
Sunshine Strahlender Sonnenschein in den 24 Stunden bis Mitternacht [h]
WindGustDir (Qualitativ, nominal) Richtung der stärksten Böe in den 24 Stunden bis Mitternacht [16 Himmelsrichtung]
WindGustSpeed (Quantitativ, stetig) Geschwindigkeit der stärksten Böe in den 24 Stunden bis Mitternacht [km/h]
WindDir9am (Qualitativ, nominal) Windrichtung gemittelt über 10 Minuten vor 9 Uhr [16 Himmelsrichtung]
WindDir3pm (Qualitativ, nominal) Windrichtung gemittelt über 10 Minuten vor 15 Uhr [16 Himmelsrichtung]
WindSpeed9am (Quantitativ, stetig) Windgeschwindigkeit gemittelt über 10 Minuten vor 9 Uhr [km/h]
WindSpeed3pm (Quantitativ, stetig) Windgeschwindigkeit gemittelt über 10 Minuten vor 15 Uhr [km/h]
Humidity9am (Quantitativ, stetig) Relative Luftfeuchtigkeit gemittelt über 10 Minuten vor 9 Uhr [%]
Humidity3pm (Quantitativ, stetig) Relative Luftfeuchtigkeit gemittelt über 10 Minuten vor 15 Uhr [%]
Pressure9am (Quantitativ, stetig) Atmosphärischer Druck auf mittlere Meereshöhe gemittelt über 10 Minuten vor 9 Uhr [hpa]
Pressure3pm (Quantitativ, stetig) Atmosphärischer Druck auf mittlere Meereshöhe gemittelt über 10 Minuten vor 15 Uhr [hpa]
Cloud9am (Quantitativ, nominal) Anteil des Himmels, der um 9 Uhr von Wolken verdeckt ist [Achtel]
Cloud3pm (Quantitativ, nominal) Anteil des Himmels, der um 15 Uhr von Wolken verdeckt ist [Achtel]
Temp9am (Quantitativ, stetig) Temperatur um 9 Uhr [°C]
Temp3pm (Quantitativ, stetig) Temperatur um 15 Uhr [°C]
RainToday (Qualitativ, nominal) Indikatorvariable, ob es an diesem Tag geregnet hat [Yes/No]
RainTomorrow (Qualitativ, nominal) Indikatorvariable, ob es am nächsten Tag geregnet hat [Yes/No]

Betrachtung der Zusammenfassung

Bei der Zusammenfassung fällt auf, dass wir mit einigen qualitativen Merkmalen arbeiten müssen. Ebenfalls scheinen wir einige Null Werte und fehlende Einträge zu haben. Um diese kümmern wir uns im Data Preparation.


Statistische Merkmale der Daten

Aus der obigen Tabelle geht hervor, dass es Aussreisser bei Rainfall, Evaporation, WindSpeed9am und Windspeed3pmgeben kann. Dies erkennt man aus der Differenz zwischen dem max-Wert und den 75%-Quantil. Um dies zu überprüfen stellen wir die auffälligen Merkmale, Kapitel Betrachtung der numerischen Variablen, als Histogramm dar.

In 49 australischen Städten wurden 145'460 Messungen mit 23 unterschiedlichen Merkmalen aufgenommen. Im Datensatz befinden sich 31'880 Regentage.


Univariate Analyse des Targets

Obenstehendes Diagramm visualisiert alle 145'460 Einträge, von denen bei 31'880 Einträgen Regen festgestellt wurde.


Bivariate Analyse

Im Folgenden soll das Zusammenspiel zweier Merkmale analysiert und grafisch dargestellt werden. Konkret wird Niederschlag und Luftfeichtigkeit, sowie Windgeschwindigkeit zu verschiedenen Zeiten verglichen.

Betrachtung der kategorischen Variablen

Erkenntnisse der quantitativen Merkmale

Betrachtung der numerischen Variablen

Alle vier Merkmale sind stark Rechtsschief. Mit einem Boxplot können wir nun erkennen, um wieviele Ausreisser es sich handelt.

Sowie bei Regenmenge, als auch bei Verdunstung besteht der Boxplot vor allem aus Ausreissern. Das war zu erwarten, da es sich nur bei einem kleinen Teil der Tage um Regentage handelt. Bei der Verdunstung ist bereits ein aussagekräftigerer Boxplot zu sehen, da hier nicht nur Regenfall, sondern auch allgemeine Luftfeuchtigkeit (die als Morgentau wieder verdunsten kann) eine Rolle spielt.

Die Anzahl der Ausreisser ist sehr hoch, darum werden wir uns im Data Preparation kümmern müssen.


Multivariate Analyse

Bei der multivariaten Analyse werden alle Merkmale und ihre Einflüsse aufeinander analysiert. Zuerst soll das anhand einer Datenmatrix ersichtlich gemacht werden, die als sogenannte "Heatmap" dargestellt wird.

Heatmap

Interpretation

Je höher die Zahl (also je dunkler das Kästchen), desto stärker korrelieren die Merkmale zueinander. Ist die Zahl 0, gibt es keine Korrelation. Bei -1 herrscht umgekehrte Proportionalität (je mehr Wolken, desto weniger Sonnenschein). Dazu gehören:

Pair Plot

Als nächstes schauen wir uns die stark korrelierenden Merkmale im Pair Plot an.

Data Preparation

Nun kümmern wir uns um die fehlenden Werte und teilen den Datensatz nach der Location auf, um eine bessere Übersicht zu bekommen

Wenn wir alle fehlende Werte aus dem Datensatz streichen würden, hätten wir nur noch rund einen Drittel der Daten zur Verfügung.
Wir werden deshalb die fehlenden Werte mit dem Median befüllen.

Für die kategorischen Variablen, machen wir dasselbe mit der .mode() Funktion.

Da wir nun keine fehlende Werte mehr haben, können wir uns dem encoding der kategorischen Variablen zuwenden.

Ebenfalls ersetzen wir Yes / No mit 1 / 0

und geben jeder Location ihre Koordinaten.

Deklarieren des Targets

"RainTomorrow" ist unser Target. Für alle Features werden die Werte von "RainTomorrow" und "Location" eliminiert, da sie weiter nicht benötigt werden.

Datensatz in training und test aufteilen

Die in der EDA auffällig Schiefen Kategorien werden nun korrigiert. Dazu werden alle Ausreisser mit dem 75%-Quantil ersetzt.

Die Boxplots sind jetzt angenehmer zu interpretieren.



No Free Lunch

In den folgenden Abschnitten werden verschiedene Learner getestet und miteinander verglichen. Es soll der beste Learner für die Auswertung unserer Daten gefunden werden.

k-Nearest-Neighbors

Damit unser kNN-Algorithmus optimal funktioniert, werden alle Daten mit dem Standardscaler standardisiert.

Ein ideales k soll gefunden werden. Dafür wird k von 1 bis 40 iteriert. Die Ergebnisse des idealen k werden in Diagrammen dargestellt.

Der kNN funktionert am besten im niedrigdimensionalen Raum. Mit unseren 25 scheint der Algortihmus ein passender zu sein, jedoch ist unsere Datenmenge hoch, was zu einem hohen Rechenaufwand führen wird.

Die oben Dargestellten Diagramme visualisieren die Qualtitätsmasse (Accuracy, F1-Score, Recall, Precision) für die Klassifizierung bei verschiedenen Werten für k. Es ergibt sich ein optimales k von 26. Um den kNN später mit anderen Learnern vergleichen zu können, erstellen wir eine Konfusionsmatrix zu den Ergebnissen unserer Test-Daten.

Konfusionsmatrix:

Die Learningkurven (oben) gehen weit auseinander, was auf eine hohe Varianz schliessen lässt. Zur Behebung könnten neue Trainingsdaten beschafft oder eine Regularisierung eingeführt werden. Zuerst wollen wir aber die Performance anderer Learner begutachten.

Optimierter kNN Algorithmus

Logistische Regression

Als zweiter Learner implementieren wir die logistische Regression. Genau wie beim kNN werten wir die Scores (Qualitätsmasse) aus und visualisieren die Ergebnisse TP, FP, TN, FN in einer Konfusionsmatrix.

Die Werte weichen nur leicht von denen des kNN ab, die Rechenzeit ist hier aber deutlich tiefer. Die ROC-Kurve verläuft nahezu identisch mit der des kNN, was eine Modellbewertung zwischen diesen beiden Learnern schwierig macht.

Decision Trees

Bei den Decision Trees ist die Genauigkeit leicht tiefer als bei den ersten beiden Learnern. Auch hier zeigt sich anhand der Rechenzeit den deutlich geringeren Berechnungsaufwand als beim kNN.

Random Forest

Was Genauigkeit betrifft, ist der Random Forest der beste der verwendeten Learner. Wie zu erwarten war, ist die Rechenzeit höher als bei einfachen Decision Trees oder logistischer Regression, aber immernoch deutlich tiefer, als beim kNN. Aufgrund der Genauigkeit werden wir versuchen, diesen Learner zu boosten.

Dimensionsreduktion am optimierten kNN Algorithmus

Mit einer Dimensionsreduktion erhofften wir uns geringere Rechenzeiten beim kNN. Die damit verbundene Verringerung der Genauigkeit wird in Kauf genommen. Das Ergebnis zeigt aber, dass eine Optimierung in diese Richtung für unser Problem nicht infrage kommt.



Validierung

Kreuzvalidierte Performance dieser Lerner und Hyperparameter-Tuning

Vergleich der Modelle



Boosting von Random Forest

Vergleich der Modelle



Entscheid

Von allen Learnern hat der Random Forest am besten abgeschlossen. Wir haben diesen Learner mit drei verschiedenen Boostern optimiert. Sowie bei Rechenzeit und Genauigkeit, als auch bei F1-Score und ROC-AUC hat sich der XGBoost als der beste herausgestellt.



Schlussfolgerung und Ausblick

Spannend wäre zu beobachten, wie sich die Ergebnisse verändern, wenn die Data Preparation anders gemacht wird. Beispielsweise könnten fehlende Daten nicht einfach durch den Median ersetzt werden, sondern könnten aus anderen Datensätzen Werte entnommen werden, die für unseren Datensatz zutreffen. Es müsste dann auch untersucht werden, ob der Random Forest sich immernoch als der ideale Learner beweisen kann. Auf genauere Data Preparation könnten auch genauere Ergebnisse folgen. Bestehende Learner können alle noch optimiert werden. Sind die Grenzen des maschinellen Lernens erreicht, so muss auf neuronale Netzwerke zurückgegriffen werden.



Referenzen

'Rain in Australia' Datensatz
Erkärung der Merkmale



Zum Inhaltsverzeichnis